// /**
// *      author: Y_Yao
// *      created: 2024-12-19 10:34:20
// **/

// #include<bits/stdc++.h>

// #define int LL
// using namespace std;
// using LL = long long;
// const LL LLINF = 1e18;
// const int INF = 0x3f3f3f3f;
// const int N = 20 + 7;
// int a[N];
// int dp[N];
// int n;
// int ans = INF;

// void dfs(int step,int suma,int sumb)
// {
//     if(step == n + 1)
//     {
//         ans = min(ans,max(suma,sumb));
//         return;
//     }

//     dfs(step + 1,suma + a[step],sumb);

//     dfs(step + 1,suma,sumb + a[step]);
// }

// void solve()
// {
//     cin >> n;
//     int sum = 0;
//     for(int i = 1;i <= n;i++)
//     {
//         cin >> a[i];
//     }

//     dfs(0,0,0);

//     cout << ans << endl;
// }

// signed main()
// {
//     ios::sync_with_stdio(false);
//     cin.tie(0);

//     int t = 1;
//     //cin >> t;
//     while(t--)
//     {
//         solve();
//     }
//     return 0;
// }


/**
*      author: Y_Yao
*      created: 2024-12-19 16:28:55
**/

#include<bits/stdc++.h>

#define int LL
using namespace std;
using LL = long long;
const LL LLINF = 1e18;
const int INF = 0x3f3f3f3f;
const int N = 20 + 7;
int a[N];
int n;
int ans = INF;

void solve()
{
    cin >> n;
    for(int i = 1;i <= n;i++)
    {
        cin >> a[i];
    }

    for(int i = 0;i < (1 << n);i++)
    {
        int suma = 0;
        int sumb = 0;
        for(int j = 0;j < n;j++)
        {
            if((i >> j) & 1)
            {
                suma += a[j + 1];
            }
            else sumb += a[j + 1];
        }
        ans = min(ans,max(suma,sumb));
    }

    cout << ans << endl;
}

signed main()
{
    ios::sync_with_stdio(false);
    cin.tie(0);

    int t = 1;
    //cin >> t;
    while(t--)
    {
        solve();
    }
    return 0;
}

